/**
 * 视频
 * @author luguoxiang
 * @date 2025-02-23
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
import { BaseEntity, IConfigSchema } from '@/soar';
import { basePath } from './api';
import { MenuComponent } from '@/types/interface';

export interface Video extends BaseEntity {
  /** 点击数 */
  clinks?: any;
  /** 收藏数 */
  collect?: any;
  /** 评论数 */
  comments?: any;
  /** 封面 */
  cover?: any;
  /** 创建人 */
  createBy?: any;
  /** 创建时间 */
  createTime?: any;
  /** 时长（秒） */
  duration?: any;
  /** 分组id(0：默认分组) */
  groupId?: any;
  /**  */
  id?: any;
  /** 介绍 */
  introduce?: any;
  /** 点赞数 */
  likes?: any;
  /** 顺序 */
  sort?: any;
  /** 状态(0待发布，1已发布，2已下架) */
  status?: any;
  /** 标题 */
  title?: any;
  /** 更新人 */
  updateBy?: any;
  /** 更新时间 */
  updateTime?: any;
  /** 文件地址 */
  url?: any;
  /** 乐观锁 */
  version?: any;
}

const fieldList: IConfigSchema<Video>[] = [
  {
    field: 'groupId',
    label: '分组',
    dataType: 'number',
  },
  {
    field: 'cover',
    label: '封面',
    dataType: 'img',
    table: {
      width: 100,
    },
    search: false,
  },
  {
    field: 'title',
    label: '标题',
    dataType: 'string',
  },
  {
    field: 'duration',
    label: '时长（秒）',
    dataType: 'number',
    table: {
      width: 120,
    },
  },
  {
    field: 'introduce',
    label: '介绍',
    dataType: 'string',
  },
  {
    field: 'url',
    label: '文件地址',
    dataType: 'string',
    table: false,
    search: false,
  },
  {
    field: 'clinks',
    label: '点击数',
    dataType: 'number',
    form: false,
    table: {
      width: 120,
    },
  },
  {
    field: 'collect',
    label: '收藏数',
    dataType: 'number',
    form: false,
    table: {
      width: 120,
    },
  },
  {
    field: 'comments',
    label: '评论数',
    dataType: 'number',
    form: false,
    table: {
      width: 120,
    },
  },
  {
    field: 'sort',
    label: '顺序',
    dataType: 'number',
    table: {
      width: 120,
    },
  },
  {
    field: 'status',
    label: '状态',
    dataType: 'dict',
    params: 'VideoStatusEnum',
    table: {
      width: 80,
    },
  },
];

export default fieldList;

/**
 * 组件配置（用于生成菜单数据）
 */
export const COMPONENTS: MenuComponent[] = [
  {
    title: '视频管理',
    component: () => import('./List.vue'),
    sort: 10,
    keepalive: true,
    icon: 'view-list',
    permits: [`GET${basePath}/query`],
    elements: [
      { title: '新增', code: 'create', permits: [`POST${basePath}/create`] },
      { title: '更新', code: 'update', permits: [`POST${basePath}/update`, `GET${basePath}/detail`] },
      { title: '删除', code: 'remove', permits: [`POST${basePath}/remove`] },
      { title: '详情', code: 'detail', permits: [`GET${basePath}/detail`] },
      { title: '导入', code: 'import', permits: [`POST${basePath}/import`] },
      { title: '导出', code: 'export', permits: [`GET${basePath}/export`] },
    ],
  },
];
